package com.springboot.demo.entity;

import com.springboot.demo.common.customValidator.ListNotHasNull;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * @author wubc683
 * @desc
 * @date 2021-11-19 15:17
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableFilter {
    @ApiModelProperty(value = "报表过滤id", required = true)
    private Long id;
    @ApiModelProperty(value = "报表过滤所属报表id", required = true)
    private Long tableId;
    @ApiModelProperty(value = "过滤字段,校验方式同维度，对比，值", required = true)
    @NotNull(message = "报表过滤字段不能为null")
    private Integer filterField;
    @ApiModelProperty(value = "报表过滤模式选择,1:等于，2：不等于，3：大于，4：大于等于，5：小于，6：小于等于，7：选择范围，8：包含，9：不包含，" +
            "10：为空，11：不为空", required = true)
    @NotNull(message = "报表过滤模式不能为null")
    private Integer filterMode;
    @ApiModelProperty(value = "过滤值类型,决定过滤值格式,详细可参考开发文档补充说明,过滤模式为10，11不需要此参数,下述json字符串键固定,值可变" +
            "1.常规字符串型" +
            "   1.1单值，类型值为11,示例：\"str1\"" +
            "   1.2多值，类型值为12,示例：[\"str1\",\"str2\",...]" +
            "2.数值型,整数部分最多39位，小数部分最多6位" +
            "   2.1单值，类型值为21,示例：1.1" +
            "   2.2双值,类型值为22，双值为最小值+最大值,示例{\"min\":\"1.1\",\"max\":\"9.9\"}" +
            "3.时间型格式" +
            "   3.1单个时间值，类型值为31,示例：\"2021-11-11 11:11:11\"" +
            "   3.2起始时间+结束时间,类型值为32,示例：{\"startDate\":\"2021-11-11 11:11:11\",\"endDate\":\"2021-22-22 22:22:22\"}" +
            "   3.3固定值,类型值为33(和3.1的区别是前一个直接填，后一个要选固定值再填),示例：同3.1" +
            "   3.4最近30分钟,类型值为34" +
            "   3.5最近1小时,类型值为35" +
            "   3.6最近3小时,类型值为36" +
            "   3.7最近6小时,类型值为37" +
            "   3.8最近1天，类型值为38" +
            "   3.9最近2天,类型值为39" +
            "   3.10最近7天,类型值为40" +
            "   3.11最近30天,类型值为41" +
            "   3.12最近90天,类型值为42" +
            "   3.13最近6个月,类型值为43" +
            "   3.14最近1年,类型值为44" +
            "类型值34~44，过滤值传空值\"\",类型已经能说明了", required = true)
    @NotNull(message = "过滤值类型不能为null")
    private Integer filterDataType;
    @ApiModelProperty(value = "过滤值,单个字符串长度不超过128, 解析格式由过滤值类型决定", required = true)
    @NotNull(message = "过滤值不能为null")
    @ListNotHasNull
    private List<String> filterData;
}
